package com.dimanche.library_base.utils;

import android.text.TextUtils;


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * author : Dimanche
 * date   : 2020/7/3011:40
 * desc   :时间工具类
 * version: 1.0
 */
public class TimeUtils {

    /**
     * 获取当前时间
     *
     * @return yyyy年MM月dd日
     */
    public static String getNowTimeOfYMDCh() {
        SimpleDateFormat formatYMDCh = new SimpleDateFormat("yyyy年MM月dd日");
        String dateStr = formatYMDCh.format(new Date());
        return dateStr;
    }

    /**
     * 获取当前时间
     *
     * @return yyyy-MM-dd格式
     */
    public static String getNowTimeOfY_M_D() {
        SimpleDateFormat formatY_M_D = new SimpleDateFormat("yyyy-MM-dd");
        String dateStr = formatY_M_D.format(new Date());
        return dateStr;
    }


    /**
     * 获取当前时间(系统)
     *
     * @return yyyy-MM-dd HH:mm:ss格式
     */
    public static String getNowSysTimeOfYMDHMS() {
        SimpleDateFormat formatY_M_D_H_M_S = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateStr = "";
        dateStr = formatY_M_D_H_M_S.format(new Date());
        return dateStr;
    }


    /**
     * 计算两个日期之间的差距
     *
     * @param time1
     * @param time2
     * @return
     */
    public static long disparityTime(String time1, String time2) {
        SimpleDateFormat formatY_M_D = new SimpleDateFormat("yyyy-MM-dd");
        long day = 0;
        try {
            day = (formatY_M_D.parse(time1).getTime() - formatY_M_D.parse(time2).getTime()) / 1000 / 60 / 60 / 24;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return day;
    }

    /**
     * 计算两个日期之间的差距
     *
     * @return
     */
    public static long disparityTime(long time1, Date time2) {
        long day = 0;
        Date date1 = new Date(time1);
        day = (time2.getTime() - date1.getTime()) / 1000 / 60 / 60 / 24;
        return day;
    }


    /**
     * 将字符串类型的日期转换成long类型的日期
     *
     * @param timeStr 带转换的日期字符串
     * @return 转换后的long类型的日期
     */
    public static long tranceLongYMDOfStr(String timeStr) throws ParseException {
        SimpleDateFormat formatYMD = new SimpleDateFormat("yyyyMMdd");
        if (timeStr == null || "".equals(timeStr)) {
            return 0;
        }
        Date date = formatYMD.parse(timeStr);
        return date.getTime();
    }

    /**
     * 将String类型的日期转换成long类型的日期
     *
     * @param dateStr
     * @return
     */
    public static long tranceStringToLong(String dateStr) throws ParseException {
        SimpleDateFormat formatHMS = new SimpleDateFormat("HH:mm:ss");
        if (TextUtils.isEmpty(dateStr)) {
            return 0;
        }
        Date date = formatHMS.parse(dateStr);
        return date.getTime();
    }

    public static long traceY_M_D_H_M_SString2Long(String dateStr) {
        SimpleDateFormat formatY_M_D_H_M_S = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        if (TextUtils.isEmpty(dateStr)) {
            return 0;
        }
        Date date = null;
        try {
            date = formatY_M_D_H_M_S.parse(dateStr);
        } catch (ParseException e) {
            e.printStackTrace();
            return 0;
        }
        return date.getTime();
    }

    /**
     * 将long类型的时间转换为字符串
     *
     * @param time
     * @return
     */
    public static String tranceLongToY_M_D_H_M_S(long time) {
        SimpleDateFormat formatY_M_D_H_M_S = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date(time);
        String str = "";
        str = formatY_M_D_H_M_S.format(date);
        return str;
    }

    /**
     * date类型的时间转换为long类型
     *
     * @param date
     * @return
     */
    public static long tranceDateToLong(Date date) {
        if (date == null) {
            return 0;
        }
        return date.getTime();
    }

    /**
     * 只比时间，不比日期
     * date1和date2相比，date1是否大于date2
     *
     * @param long1
     * @param long2
     * @return
     */
    public static boolean date1BiggerDate2(long long1, long long2) {
        Date date1 = new Date(long1);
        long allSecond1 = getDateSecond(date1);
        Date date2 = new Date(long2);
        long allSecond2 = getDateSecond(date2);
        return allSecond1 > allSecond2;
    }

    /**
     * 将date中的时间转换成秒
     *
     * @param date
     * @return
     */
    public static long getDateSecond(Date date) {
        return (date.getHours() * 60 * 60) + (date.getMinutes() * 60) + date.getSeconds();
    }
}
